#!/usr/bin/env python3
# -*- coding:utf-8 -*-
from page.basepage import WebPage, sleep
from common.readelement import Element
# 输入page_element中的yaml文件名
search = Element('search')

"""
    1. basepage ——selenium的基类，对selenium的方法进行封装
    2. pageelements——页面元素，把页面元素单独提取出来，放入一个文件中
    3. searchpage ——页面对象类，把selenium方法和页面元素进行整合
    4. testcase ——使用pytest对整合的searchpage进行测试用例编写
    POM模型,把selenium方法，页面元素，页面对象，测试用例以上四种代码主体进行拆分，
    虽然在用例很少的情况下做会增加代码，但是当用例多的时候意义很大，代码量会在用例增加的时候显著减少。
    我们维护代码变得更加直观明显，代码可读性也变得比工厂模式强很多，代码复用率也极大的得到了提高。
"""
class SearchPage(WebPage):
    # 对搜索关键词，点击搜索，搜索联想，进行封装，并配置注释，过一段时间后会忘记，方便阅读
    """搜索类"""

    def input_search(self, content):
        """输入搜索"""
        self.input_text(search['搜索框'], txt=content)
        sleep()

    @property
    def imagine(self):
        """搜索联想"""
        elements = self.find_elements(search['候选'])
        element_texts = [x.text for x in elements]
        return elements, element_texts

    def click_search(self):
        """点击搜索"""
        self.click_element(search['搜索按钮'])
